package leetcode.list;

import utils.node.ListNode;

/**
 * DESCRIPTION: https://leetcode-cn.com/problems/delete-node-in-a-linked-list/
 * 请编写一个函数，用于 删除单链表中某个特定节点 。在设计函数时需要注意，你无法访问链表的头节点 head ，只能直接访问 要被删除的节点 。
 * 题目数据保证需要删除的节点 不是末尾节点 。
 * Author: ammar
 * Date:   2021/12/9
 * Time:   下午7:35
 */
public class _237_删除链表中的节点 {

    /**
     * 思路，普通做法是获取到上一个节点，然后将上一个节点的 next 指向删除节点的下一个节点
     * 这里由于无法拿到上一个节点，因此可以将下一个节点的值复制过来，然后把下一个节点删除
     * @param node
     */
    public static void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }

    public static void main(String[] args) {
        Integer[] integers = {4, 5, 1, 9};
//        Integer[] integers = {4, 5, 1, 9};
        ListNode listNode = Tools.generList(integers);
        System.out.println(listNode);
        deleteNode(listNode.next);
        System.out.println(listNode);
    }
}
